[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事では、タプルや関数の22制限が撤廃され、限界突破した件について解説します。
タプルや関数に23個以上の要素を渡せるようになった
Scala 3では、Function
型のパラメータやTuple
型のフィールドについて掛かっていた22を最大値とする制約が撤廃され、なんと任意の数のパラメータを持つことができるようになりました。
Scala 3でも、Function0
からFunction22
、Tuple0
からTuple22
までのトレイトは引き続き存在しています。
Scala 3からはこれに加えて、Function22を超える関数が新しいトレイトscala.FunctionXXL
に、Tuple22を超えるタプルは新しいトレイトscala.TupleXXL
へと変換されるようになりました。
外部リンク:Dotty Docs - FunctionXXL
外部リンク:Dotty Docs - TupleXXL
これらはどちらも配列を使って実装されています。
23個以上の要素を持つタプルを定義する例
タプルは任意の数のフィールドを持つことができます。
val tuple25 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25) println(tuple25)
外部リンク:Dotty Docs - Tuple
関数に23個以上の引数を定義する例
val function26 = (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int, h: Int, i: Int, j: Int, k: Int, l: Int, m: Int, n: Int, o: Int, p: Int, q: Int, r: Int, s: Int, t: Int, u: Int, v: Int, w: Int, x: Int, y: Int, z: Int) => a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z println(function26(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26))
サイト内検索
カテゴリ「Scala 3(Dotty)特集」の記事
「可変長引数パターン」のご紹介:Scala 3のパワーアップした表現力(2)
次世代Scala「Dotty」 3つのねらい・7つの新しさをご紹介
newキーワードを不要にする「クリエイターアプリケーション」とは?:Scala 3のパワーアップした表現力(4)
タプルと関数が限界突破!22制限の撤廃について:Scala 3のパワーアップした表現力(4)
「型ラムダ」のご紹介:Scala 3の新しい型表現(3)
【2019年12月】Scala 3(Dotty)開発の進捗と2.13からの移行についての最新情報
「合併型」のご紹介:Scala 3の新しい型表現(2)
Scala 3に用意された移行オプションの使い方まとめ
「交差型」のご紹介:Scala 3の新しい型表現(1)
Scala 3.0.0-M1がリリースされます
「コンテキスト関数」のご紹介:Scala 3の新しい型表現(4)
「トレイトパラメータ」のご紹介:Scala 3のパワーアップした表現力(1)
トップレベル定義の導入とパッケージオブジェクトの廃止について:Scala 3のパワーアップした表現力(3)
カテゴリ「Scala 3(Dotty)特集」の記事
「可変長引数パターン」のご紹介:Scala 3のパワーアップした表現力(2)
次世代Scala「Dotty」 3つのねらい・7つの新しさをご紹介
newキーワードを不要にする「クリエイターアプリケーション」とは?:Scala 3のパワーアップした表現力(4)
タプルと関数が限界突破!22制限の撤廃について:Scala 3のパワーアップした表現力(4)
「型ラムダ」のご紹介:Scala 3の新しい型表現(3)
【2019年12月】Scala 3(Dotty)開発の進捗と2.13からの移行についての最新情報
「合併型」のご紹介:Scala 3の新しい型表現(2)
Scala 3に用意された移行オプションの使い方まとめ
「交差型」のご紹介:Scala 3の新しい型表現(1)
Scala 3.0.0-M1がリリースされます
「コンテキスト関数」のご紹介:Scala 3の新しい型表現(4)
「トレイトパラメータ」のご紹介:Scala 3のパワーアップした表現力(1)
トップレベル定義の導入とパッケージオブジェクトの廃止について:Scala 3のパワーアップした表現力(3)